package gui;

import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Timestamp;

import gestionBDD.accesBDD;
import gestionBDD.requetesClient;
import gestionBDD.requetesCommande;
import interne.Client;
import interne.Commande;

import com.trolltech.qt.gui.*;

public class fenetreClient extends QWidget {
	
	protected Client client ;
	    
    public fenetreClient(Client c) throws SQLException {
    	
    	setClient(requetesClient.trouverAvecMail(c));

    	/** Login's GroupBox' **/
        QGroupBox clientGroup = new QGroupBox(tr("Bienvenue " + client.getPrenom() + " " + client.getNom()));

        /* Bouton Gestion Album */
        QPushButton boutonConsultationPriv = new QPushButton("Gérer mes albums");
        boutonConsultationPriv.clicked.connect(this, "consulterAlbumsPriv()"); 

        /* Bouton Consulter Album Public */
        QPushButton boutonConsultationPub = new QPushButton("Voir les albums publics");
        boutonConsultationPub.clicked.connect(this, "consulterAlbumsPub()"); 

        /* Bouton Commande */
        QPushButton boutonCommande = new QPushButton("Passer une commande");
        boutonCommande.clicked.connect(this, "passerCommande()");

        /* Bouton Historique Commande*/
        QPushButton boutonCommandeOld = new QPushButton("Voir mes commandes");
        boutonCommandeOld.clicked.connect(this, "consulterHistorique()");
        
        /* Bouton Quitter */
        QPushButton boutonDeconnexion = new QPushButton("Quitter");
        boutonDeconnexion.clicked.connect(QApplication.instance(), "quit()");
        
        // Dialog Layout
        QVBoxLayout clientLayout = new QVBoxLayout();
        clientLayout.addWidget(boutonConsultationPriv);
        clientLayout.addWidget(boutonConsultationPub);
        clientLayout.addWidget(boutonCommande);
        clientLayout.addWidget(boutonCommandeOld);
        clientLayout.addWidget(boutonDeconnexion);
        clientGroup.setLayout(clientLayout);
        
        QVBoxLayout layout = new QVBoxLayout();
        layout.addWidget(clientGroup);
        setLayout(layout);
    }

	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}
	
	/*
	 * Accède au menu de consultation d'albums personnels
	 */
    public void consulterAlbumsPriv() throws SQLException {
    	try {
            fenetreAlbumPriv fenetre = new fenetreAlbumPriv(client);
    		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
    		menuPrincipal.setCentralWidget(fenetre) ;
    	}
    	catch (SQLException e) {
    		System.out.println(e) ;
    	}
    }
    
    /*
     * Accède au menu de consultation d'albums personnels
     */
    public void consulterAlbumsPub() throws SQLException {
    	try {
            fenetreAlbumPub fenetre = new fenetreAlbumPub(client);
    		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
    		menuPrincipal.setCentralWidget(fenetre) ;
    	}
    	catch (SQLException e) {
    		System.out.println(e) ;
    	}
    }
    
    /*
     * Accède au menu Consultation Historique des commandes
     */
    public void consulterHistorique() throws SQLException {
    	try {
            fenetreHistorique fenetre = new fenetreHistorique(client);
    		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
    		menuPrincipal.setCentralWidget(fenetre) ;
    	}
    	catch (SQLException e) {
    		System.out.println(e) ;
    	}
    }

    /*
     * Accède au menu Passer Commande
     * Infos : Crée un point de sauvegarde au cas où la commande serait annulée
     * 			Crée une référence de commande
     */
    public void passerCommande() throws SQLException {
    	try {

    		Savepoint save = accesBDD.getInstance().setSavepoint() ;
    		
    		Timestamp sqlDate = new Timestamp(new java.util.Date().getTime());
            Commande commande = new Commande(client.getIdClient(), sqlDate, 
            		client.getNom(), client.getPrenom(), client.getAdresse());

            requetesCommande.ajouterCommande(commande);
            commande = requetesCommande.trouverReference(commande);
    		
            fenetreCommande fenetre = new fenetreCommande(commande, client, save);
    		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
    		menuPrincipal.setCentralWidget(fenetre) ;
    	}
    	catch (SQLException e) {
    		System.out.println(e) ;
    	}
    }

}

